//package org.cboard.mail;
//
///**
// * Created by mizhonghua on 2018/2/6.
// */
//
//import org.apache.commons.lang3.StringUtils;
//
//import javax.activation.DataHandler;
//import javax.activation.FileDataSource;
//import javax.mail.*;
//import javax.mail.internet.InternetAddress;
//import javax.mail.internet.MimeBodyPart;
//import javax.mail.internet.MimeMessage;
//import javax.mail.internet.MimeMultipart;
//import java.util.*;
//import java.util.Map.Entry;
//
///**
// * @author mizhonghua
// */
//public class SendMail {
//
//    private String smtp = "";        //邮件服务器主机名
//    private String protocol = "";        //邮件传输协议
//    private String username = "";        //登录用户名
//    private String password = "";        //登录密码
//    private String from = "";        //发件人地址
//    private String to = "";          //收件人地址
//    private String cc = "";          //抄送人地址
//    private String subject = "";     //邮件主题
//    private String body = "";        //邮件内容
//    private String nickName = "";      //邮件发送者地址昵称
//
//    //一个有规则的map，用作嵌入图片
//    Map<String, String> map;
//    //存放附件
//    List<String> list;
//
//    private String ms = "";
//
//    public SendMail(Map<String, String> map, List<String> filelist, Map<String, String> image) {
//        this.smtp = map.get("smtp");
//        this.protocol = map.get("protocol");
//        this.username = map.get("username");
//        this.password = map.get("password");
//        this.from = map.get("from");
//        this.to = map.get("to");
//        this.cc = map.get("cc");
//        this.subject = map.get("subject");
//        this.body = map.get("body");
//
//        this.list = filelist;
//        this.map = image;
//
//        this.nickName = map.get("nickName");
//
//        this.ms = map.get("ms");
//    }
//
//    public void send() throws Exception {
//        Properties pros = new Properties();
//        pros.setProperty("mail.transport.protocol", this.protocol);
//        pros.setProperty("mail.host", this.smtp);
//        pros.put("mail.smtp.auth", "true");
//        MySendMailAuthenticator ma = new MySendMailAuthenticator(this.username, this.password);
//        Session session = Session.getInstance(pros, ma);
//        session.setDebug(false);
//
//        MimeMessage msg = createMessage(session);
//
//        Transport ts = session.getTransport();
//        ts.connect();
//        ts.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
//        if (StringUtils.isNotBlank(cc)) {
//            ts.sendMessage(msg, msg.getRecipients(Message.RecipientType.CC));
//        }
//        if (StringUtils.isNotBlank(ms)) {
//            ts.sendMessage(msg, msg.getRecipients(Message.RecipientType.BCC));
//        }
//        ts.close();
//    }
//
//    public MimeMessage createMessage(Session session) throws Exception {
//
//        MimeMessage message = new MimeMessage(session);
//        InternetAddress address = new InternetAddress(this.from);
//        if (StringUtils.isNotBlank(nickName)) {
//            address.setPersonal(nickName);
//        }
//        message.setFrom(address);
//        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
//        if (StringUtils.isNotBlank(cc)) {
//            message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
//        }
//        if (StringUtils.isNotBlank(ms)) {
//            message.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(ms));
//        }
//        message.setSubject(this.subject);
//
//        MimeMultipart allMultipart = new MimeMultipart();
//
//        //创建代表邮件正文和附件的各个MimeBodyPart对象
//        MimeBodyPart contentpart = createContent(this.body);
//        allMultipart.addBodyPart(contentpart);
//
//
//        //创建用于组合邮件正文和附件的MimeMultipart对象
//        for (int i = 0; i < list.size(); i++) {
//            allMultipart.addBodyPart(createAttachment(list.get(i)));
//        }
//
//        //设置整个邮件内容为最终组合出的MimeMultipart对象
//        message.setContent(allMultipart);
//        message.saveChanges();
//        return message;
//    }
//
//    @SuppressWarnings({"rawtypes", "unchecked"})
//    public MimeBodyPart createContent(String body) throws Exception {
//        //创建代表组合Mime消息的MimeMultipart对象，将该MimeMultipart对象保存到MimeBodyPart对象
//        MimeBodyPart contentPart = new MimeBodyPart();
//        MimeMultipart contentMultipart = new MimeMultipart("related");
//
//        //创建用于保存HTML正文的MimeBodyPart对象，并将它保存到MimeMultipart中
//        MimeBodyPart htmlbodypart = new MimeBodyPart();
//        htmlbodypart.setContent(this.body, "text/html;charset=UTF-8");
//        contentMultipart.addBodyPart(htmlbodypart);
//
//        if (map != null && map.size() > 0) {
//            Set<Entry<String, String>> set = map.entrySet();
//            for (Iterator iterator = set.iterator(); iterator.hasNext(); ) {
//                Entry<String, String> entry = (Entry<String, String>) iterator.next();
//
//                //创建用于保存图片的MimeBodyPart对象，并将它保存到MimeMultipart中
//                MimeBodyPart gifBodyPart = new MimeBodyPart();
//
//                FileDataSource fds = new FileDataSource(entry.getValue());//图片所在的目录的绝对路径
//                gifBodyPart.setDataHandler(new DataHandler(fds));
//
//                gifBodyPart.setHeader("Content-ID", "<" + entry.getKey() + ">");//cid的值
//                gifBodyPart.setHeader("Content-Type", "image/png");
//                gifBodyPart.setDisposition(MimeBodyPart.INLINE);
//                gifBodyPart.setFileName(entry.getKey() + ".png");
//                contentMultipart.addBodyPart(gifBodyPart);
//
//            }
//        }
//
//        //将MimeMultipart对象保存到MimeBodyPart对象
//        contentPart.setContent(contentMultipart);
//        return contentPart;
//    }
//
//    public MimeBodyPart createAttachment(String filename) throws Exception {
//        //创建保存附件的MimeBodyPart对象，并加入附件内容和相应的信息
//        MimeBodyPart attachPart = new MimeBodyPart();
//        FileDataSource fsd = new FileDataSource(filename);
//        attachPart.setDataHandler(new DataHandler(fsd));
//        attachPart.setFileName(fsd.getName());
//        return attachPart;
//    }
//
//}
//
////向邮件服务器提交认证信息
//class MySendMailAuthenticator extends Authenticator {
//    String username = "";
//    String password = "";
//
//    public MySendMailAuthenticator(String user, String pass) {
//        this.username = user;
//        this.password = pass;
//    }
//
//    @Override
//    protected PasswordAuthentication getPasswordAuthentication() {
//        return new PasswordAuthentication(username, password);
//    }
//}
